home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 12: Textmags & Docs / nf_archive_12.iso / MAGS / SOURCES / ATARI_SRC.ZIP / atari source / FALCON / ACC / DRIVERS.ACC / MAINSTUF.C < prev    next >
Encoding:
C/C++ Source or Header  |  2001-02-10  |  12.9 KB  |  622 lines

  1. /*==========================================================================
  2.  * FILE: MAINSTUF.C
  3.  *==========================================================================
  4.  * DATE: November 20, 1992
  5.  *
  6.  * DESCRIPTION: Drivers ACC
  7.  * COMPILER: TURBO C Version 2.0
  8.  */
  9.  
  10.  
  11. /* INCLUDE FILES
  12.  *==========================================================================
  13.  */
  14. #include <sys\gemskel.h>
  15. #include <tos.h>
  16.  
  17.  
  18.  
  19. #include "country.h"
  20. #include "drivers.h"
  21. #include "drvhead.h"
  22.  
  23. #pragma warn -apt           /* 1 Non-portable pointer assignment */
  24. #pragma warn -rpt           /* 1 Non-portable pointer conversion */
  25. #include "drivers.rsh"
  26. #pragma warn .apt
  27. #pragma warn .rpt
  28.  
  29. #include "fixrsh.h"
  30. #include "xform_do.h"
  31. #include "windows.h"
  32. #include "device.h"
  33. #include "text.h"
  34. #include "custom.h"
  35. #include "path.h"
  36. #include "modify.h"
  37.  
  38. /*
  39.  * TURN OFF Turbo C " parameter X is never used" warnings.
  40.  */
  41. #pragma warn -par
  42.  
  43.  
  44.  
  45. /* PROTOTYPES
  46.  *==========================================================================
  47.  */
  48. void    Activity( void );
  49. void    XDeselect( OBJECT *tree, int button );
  50. void    XSelect( OBJECT *tree, int button );
  51. void    Do3D( void );
  52. void    Make3D2( int obj );
  53. void    Make3D1( int obj );
  54. void    Make3DUpDown( int obj );
  55. void    MakeBase( int up, int down, int slide, int base, int linebase );
  56. void    MakeBoxText( int obj, int flag );
  57. void    MakeIndicator( int obj );
  58. void    MakeActivator( int obj );
  59.  
  60.  
  61.  
  62. /* DEFINES
  63.  *==========================================================================
  64.  */
  65. #define UNDO    0x6100
  66. #define MIN_RESOLUTION  639
  67.  
  68.  
  69. /* EXTERNALS
  70.  *==========================================================================
  71.  */
  72. extern int AES_Version;
  73. extern int gl_ncolors;
  74.  
  75.  
  76. /* GLOBALS
  77.  *==========================================================================
  78.  */
  79. OBJECT *tree; 
  80. OBJECT *ad_front;    /* tree for FRONT dialog     */
  81. OBJECT *ad_device;    /* tree for DEVICE dialog    */
  82. OBJECT *ad_scan;    /* tree for scanning dialog  */
  83. OBJECT *drivetree;
  84. OBJECT *xytree;
  85. OBJECT *ad_path;
  86. OBJECT *ad_modify;
  87.  
  88. OBJECT *PrevTree;
  89. int    ctrl_id;    /* ACC id slot # */
  90.  
  91.  
  92.  
  93.  
  94. /* FUNCTIONS
  95.  *==========================================================================
  96.  */
  97.     
  98.  
  99. /* rsrc_init()
  100.  * =======================================================================
  101.  */
  102. BOOLEAN
  103. rsrc_init( void )            
  104. {
  105.       int i;
  106.  
  107.       if( !_app )
  108.             ctrl_id = menu_register( gl_apid, menu_title );
  109.       
  110.       fix_rsh( NUM_OBS, NUM_FRSTR, NUM_FRIMG, NUM_TREE,
  111.                rs_object, rs_tedinfo, rs_strings, rs_iconblk,
  112.                rs_bitblk, rs_frstr, rs_frimg, rs_trindex,
  113.                rs_imdope );
  114.       
  115.       ad_front   = ( OBJECT *)rs_trindex[ FRONT ];
  116.       ad_device  = ( OBJECT *)rs_trindex[ DEVICE ];
  117.       ad_scan    = ( OBJECT *)rs_trindex[ SCAN ];
  118.       drivetree  = ( OBJECT *)rs_trindex[ DRIVER ];
  119.       xytree     = ( OBJECT *)rs_trindex[ XYREZ ];     
  120.       ad_path    = ( OBJECT *)rs_trindex[ FONTPATH ];
  121.       ad_modify  = ( OBJECT *)rs_trindex[ MODIFY ];
  122.  
  123.       /* Minor Adjustments */
  124.       ActiveTree( ad_path );
  125.       ObW( PPATH ) -= 1;
  126.  
  127.       ActiveTree( ad_device );
  128.       ObW( DLINE )   -= 1;
  129.       for( i = DLINE0; i<= DCOVER11; i += 1)
  130.          ObW( i ) -= 1;
  131.  
  132.       ActiveTree( ad_front );
  133.       ObW( FTITLE ) += 1;
  134.       ObX( FUP )    += 1;
  135.       ObX( FDOWN )  += 1;
  136.       ObX( FBASE )  += 1;
  137.  
  138.       ObW( FTITLE1 ) += 1;
  139.       ObW( FPRINTER ) += 1;
  140.  
  141.       ObW( FBOX1 )    += 1;
  142.       
  143.                         
  144.       /* Initialize the DRAFT/FINAL flag based on the cookie */
  145.       Supexec( get_cookie );
  146.  
  147.       PrevTree   = ( OBJECT *)NULL;
  148.  
  149.       return( TRUE );
  150. }
  151.  
  152.  
  153.  
  154. /* wind_init()
  155.  * =====================================================================
  156.  * Initialize window structure.
  157.  */
  158. void
  159. wind_init( void )
  160. {
  161.    if(( AES_Version >= 0x0330 )
  162.         && ( gl_ncolors > LWHITE ) )
  163.    {
  164.      Do3D();
  165.    }
  166.  
  167.    init_window();
  168.    
  169.    if( _app )
  170.    {
  171.       if( xres >= MIN_RESOLUTION )
  172.       {
  173.         if( Create_Window() )
  174.         {
  175.           ActiveTree( ad_front );
  176.           initialize();
  177.           open_window();
  178.           graf_mouse( ARROW, 0L );
  179.           Activity();
  180.         }
  181.         else
  182.           form_alert( 1, alert13 );
  183.       }
  184.       else
  185.       {
  186.       form_alert( 1, wider );
  187.       gem_exit( 0 );
  188.       }
  189.    }
  190. }
  191.  
  192.  
  193.  
  194. /* evnt_init()
  195.  * =====================================================================
  196.  * Initialize the evnt_multi with the proper messages, timers etc...
  197.  */
  198. void
  199. evnt_init( void )
  200. {
  201.    evnt_set( MU_MESAG, -1, -1, -1, NULL, NULL, -1L );
  202. }
  203.  
  204.  
  205.  
  206. /* Activity()
  207.  * =====================================================================
  208.  * The KEY call to enter the XFORM_DO()
  209.  */
  210. void
  211. Activity( void )
  212. {
  213.    int     quit = FALSE;
  214.    WORD button;
  215.    WORD msg[8];
  216.    
  217.    do
  218.    {
  219.        button = xform_do( tree, 0, msg );
  220.  
  221.     /* Front Tree Button Handling */
  222.     if( IsActiveTree( ad_front ) )
  223.     {
  224.         quit = handle_front( button, msg );
  225.         continue;
  226.     }    
  227.     
  228.     /* Custom Tree Button Handling */
  229.     if( IsActiveTree( ad_device ) )
  230.     {
  231.         quit = handle_custom( button, msg );
  232.         continue;
  233.     }    
  234.  
  235.     /* Driver Path Button Handling */
  236.     if( IsActiveTree( ad_path ) )
  237.     {
  238.         quit = Path_Button( button, msg );
  239.         continue;
  240.     }    
  241.  
  242.     /* ADD/MODIFY Driver Button Handling */
  243.     if( IsActiveTree( ad_modify ) )
  244.     {
  245.         quit = Modify_Button( button, msg );
  246.         continue;
  247.     }    
  248.     
  249.    }while( !quit );
  250.    
  251.    if( CheckAccClose() )
  252.      return;
  253.    
  254.    Wm_Closed( (int*)msg );
  255. }
  256.  
  257.  
  258.  
  259. /* do_windows()
  260.  * =====================================================================
  261.  * wndow handling.
  262.  *
  263.  * IN: int *msg:   message buffer
  264.  *     int *event: flag to end the program.
  265.  *
  266.  * OUT: void
  267.  */
  268. void
  269. do_windows( int *msg, int *event )
  270. {
  271.    switch( msg[0] )
  272.    {
  273.       case WM_REDRAW: Wm_Redraw( msg );
  274.                     break;
  275.                     
  276.       case WM_NEWTOP:
  277.       case WM_TOPPED: Wm_Topped( msg );
  278.                     break;
  279.                     
  280.       case WM_CLOSED: Wm_Closed( msg );
  281.                     break;
  282.                     
  283.       case WM_MOVED:  Wm_Moved( msg );
  284.                     break;
  285.                     
  286.       default:
  287.               break;                                  
  288.    }
  289. }
  290.  
  291.  
  292.  
  293.  
  294. /* acc_open()
  295.  * =====================================================================
  296.  * Accessory Open Messages
  297.  * 
  298.  * IN: int *msg: message buffer;
  299.  * OUT: void
  300.  *
  301.  * GLOBAL: WINFO w:   window structure
  302.  *         int   ctrl_id: application id
  303.  */
  304. void
  305. acc_open( const int *msg )
  306. {
  307.     if( msg[4] == ctrl_id )
  308.     {
  309.       if( w.id == NO_WINDOW )
  310.       {
  311.         if( xres >= MIN_RESOLUTION )
  312.     {
  313.           if( Create_Window() )
  314.           {
  315.             ActiveTree( ad_front );
  316.             initialize();
  317.             open_window();
  318.             Activity();
  319.           }
  320.           else
  321.             form_alert( 1, alert13 );
  322.     }
  323.     else
  324.             form_alert( 1, wider );
  325.       }
  326.       else
  327.         wind_set( w.id, WF_TOP );
  328.     }
  329. }
  330.  
  331.  
  332.  
  333. /* acc_close()
  334.  * =====================================================================
  335.  * Accessory Close message
  336.  *
  337.  * IN:  int *msg:    message buffer
  338.  * OUT: void
  339.  *
  340.  * GLOBAL: int ctrl_id:    application id
  341.  *         WINFO w;       window structure
  342.  *
  343.  * Closing and deleting the window are unneccesary since the window
  344.  * handles are already invalid by the time we get the acc_close() message
  345.  */
  346. void
  347. acc_close( const int *msg )
  348. {
  349.    if( ( msg[3] == ctrl_id ) && ( w.id != NO_WINDOW ) )
  350.    {
  351.        w.id = NO_WINDOW;
  352.    }
  353. }
  354.  
  355.  
  356.  
  357. /* wind_exit()
  358.  * =====================================================================
  359.  */
  360. void
  361. wind_exit( void )
  362. {
  363.    if( w.id != NO_WINDOW )
  364.    {
  365.      wind_delete( w.id );
  366.      w.id = NO_WINDOW;
  367.    }
  368. }
  369.  
  370.  
  371.  
  372. /* XDeselect()
  373.  * =====================================================================
  374.  */
  375. void
  376. XDeselect( OBJECT *tree, int button )
  377. {
  378.    GRECT rect;
  379.  
  380.    Deselect( button );
  381.    rect = ObRect( button );
  382.    objc_offset( tree, button, &rect.g_x, &rect.g_y );
  383.    rect.g_x -= 5;
  384.    rect.g_y -= 5;
  385.    rect.g_w += 10;
  386.    rect.g_h += 10;
  387.    Objc_draw( tree, button, MAX_DEPTH, &rect );
  388. }
  389.  
  390.  
  391.  
  392. /* XSelect()
  393.  * =====================================================================
  394.  */
  395. void
  396. XSelect( OBJECT *tree, int button )
  397. {
  398.    GRECT rect;
  399.  
  400.    Select( button );
  401.    rect = ObRect( button );
  402.    objc_offset( tree, button, &rect.g_x, &rect.g_y );
  403.    rect.g_x -= 5;
  404.    rect.g_y -= 5;
  405.    rect.g_w += 10;
  406.    rect.g_h += 10;
  407.    Objc_draw( tree, button, MAX_DEPTH, &rect );
  408. }
  409.  
  410.  
  411. /* Do3D()
  412.  * =====================================================================
  413.  * An Ugly way to make everything 3D...
  414.  */
  415. void
  416. Do3D( void )
  417. {
  418.    /* Make the Front Dialog Box 3D.*/
  419.    ActiveTree( ad_front );
  420.    Make3D2( FREMOVE );
  421.    Make3D2( FCONFIG );
  422.    Make3D2( FCUSTOM );
  423.    Make3D2( FSETPATH );
  424.    Make3D2( FSAVE );
  425.    Make3D2( FEXIT );
  426.    
  427.    Make3D1( FDRAFT );
  428.    Make3D1( FFINAL );
  429.  
  430.    Make3DUpDown( FUP );
  431.    Make3DUpDown( FDOWN );
  432.    Make3DUpDown( FSLIDER );
  433.    MakeBase( FUP, FDOWN, FSLIDER, FBASE, LINEBASE );
  434.    MakeBoxText( FTITLE1, FALSE );
  435.    ObW( FTITLE1 ) -= 1;
  436.    MakeBoxText( FTITLE, FALSE );
  437.  
  438.  
  439.    /* Make the Driver Parameter Editor Dialog Box 3D */
  440.    ActiveTree( drivetree );
  441.    Make3D2( DOK );
  442.    Make3D2( DCANCEL );
  443.    Make3D1( AREAON );
  444.    Make3D1( AREAOFF );
  445.    
  446.    ActiveTree( xytree );
  447.    Make3D2( XYOK );
  448.    Make3D2( XYCANCEL );
  449.  
  450.  
  451.    /* Make the Custom Dialog Box 3D.*/
  452.    ActiveTree( ad_device );
  453.    Make3D2( DADD );
  454.    Make3D2( DMODIFY );
  455.    Make3D2( DDELETE );
  456.    Make3D2( DMENU );
  457.  
  458.    Make3DUpDown( DUP );
  459.    Make3DUpDown( DDOWN );
  460.    Make3DUpDown( DSLIDE );
  461.    MakeBase( DUP, DDOWN, DSLIDE, DBASE, DLINE );
  462.    MakeBoxText( DTITLE, FALSE );
  463.    ObW( DTITLE2 ) += 1;
  464.    TedColor( DTITLE2 ) = ( TedColor( DTITLE2 ) & 0xff70 ) | LWHITE | 0x70;
  465.    
  466.    
  467.    /* Make the Modify/ADD Dialog Box 3D. */
  468.    ActiveTree( ad_modify );
  469.    Make3DUpDown( MUP );
  470.    Make3DUpDown( MDOWN );
  471.    MakeBoxText( MEDIT, FALSE );  
  472.    ObH( MUP ) = ObH( MDOWN ) = ObH( MEDIT ) = gl_hbox;
  473.    MakeBoxText( MTITLE, FALSE );  
  474.    ObW( MTITLE ) -= 1;
  475.    
  476.    Make3D1( MROMYES );
  477.    Make3D1( MROMNO );
  478.    Make3D1( MRESYES );
  479.    Make3D1( MRESNO );
  480.    Make3D2( MOK );
  481.    Make3D2( MCANCEL );
  482.    
  483.    
  484.    /* Path Dialog Box to 3D */
  485.    ActiveTree( ad_path );
  486.    Make3D2( POK );
  487.    Make3D2( PCANCEL );
  488.    Make3DUpDown( PLEFT );
  489.    Make3DUpDown( PRIGHT );
  490.    MakeBoxText( PPATH, FALSE );
  491.    ObH( PPATH ) = ObH( PLEFT ) = ObH( PRIGHT ) = gl_hbox;
  492.    
  493.    MakeBoxText( PTITLE1, FALSE );
  494.    ObW( PTITLE1 ) -= 1;
  495.    
  496.    ObW( PTITLE2 ) += 1;
  497.    TedColor( PTITLE2 ) = ( TedColor( PTITLE2 ) & 0xff70 ) | LWHITE | 0x70;
  498.    MakeBoxText( PTITLE3, FALSE );
  499.    ObW( PTITLE3 ) -= 1;
  500.    
  501.    
  502.    /* Restore original tree */
  503.    ActiveTree( ad_front );
  504. }
  505.  
  506. void
  507. Make3DUpDown( int obj )
  508. {
  509.    MakeActivator( obj );
  510.       
  511.    ObIndex( obj ) = (LONG)( ( LONG )ObIndex( obj ) & 0xffffff70L ) | (LONG)LWHITE | 0x70L;
  512.    ObH( obj ) = gl_hbox;
  513. }
  514.  
  515.  
  516.  
  517. /* Good for Buttons */
  518. void
  519. Make3D2( int obj )
  520. {
  521.    MakeActivator( obj );
  522.       
  523.    ObH( obj )  = gl_hbox;
  524.  
  525.    ObX( obj ) += 1;
  526.    ObY( obj ) += 2;
  527.    ObW( obj ) -= 2;
  528.    ObH( obj ) -= 3;
  529. }
  530.  
  531.  
  532. void
  533. Make3D1( int obj )
  534. {
  535.    MakeIndicator( obj );
  536.          
  537.    ObH( obj )  = gl_hbox;
  538.  
  539.    ObX( obj ) += 1;
  540.    ObY( obj ) += 2;
  541.    ObW( obj ) -= 2;
  542.    ObH( obj ) -= 3;
  543. }
  544.  
  545.  
  546. void
  547. MakeBase( int up, int down, int slide, int base, int linebase )
  548. {
  549.     MakeActivator( base );
  550.         
  551.     ObY( up )   = ObY( linebase ) + 2;
  552.     ObY( down ) = ObY( linebase ) + ObH( linebase ) - ObH( down ) - 2;
  553.     ObX( down ) = ObX( base ) = ObX( up ) = ObX( linebase ) + ObW( linebase ) + 3;
  554.     ObW( up ) -= 3;
  555.     ObW( down ) = ObW( base ) = ObW( slide ) = ObW( up );
  556.      
  557.     ObY( base ) = ObY( up ) + ObH( up ) + 5;
  558.     ObH( base ) = ( ObY( down ) - 5 ) - ObY( base );
  559. }
  560.  
  561. void
  562. MakeBoxText( int obj, int flag )
  563. {
  564.    MakeActivator( obj );
  565.          
  566.    TedColor( obj ) = ( TedColor( obj ) & 0xff70 ) | LWHITE | 0x70;
  567.    ObH( obj )  = gl_hbox;
  568.  
  569.    ObX( obj ) += 2;
  570.    if( flag )
  571.       ObY( obj ) += 2;
  572.    ObW( obj ) -= 3;
  573.    ObH( obj ) -= 3;
  574. }
  575.  
  576.  
  577. void
  578. MakeIndicator( int obj )
  579. {
  580.    ObFlags( obj ) |= IS3DOBJ;
  581.    ObFlags( obj ) &= ~IS3DACT;
  582. }
  583.  
  584.  
  585. void
  586. MakeActivator( int obj )
  587. {
  588.   ObFlags( obj ) |= IS3DOBJ;
  589.   ObFlags( obj ) |= IS3DACT;
  590. }
  591.  
  592.  
  593. #if 0
  594.  
  595. void    test( void );
  596. test();          
  597.  
  598.  
  599. void
  600. test( void )
  601. {
  602.    form_alert( 1, alert13 );
  603.    form_alert( 1, alert56 );
  604.    form_alert( 1, alert1 );
  605.    form_alert( 1, alert2 );
  606.    form_alert( 1, alert3 );
  607.    form_alert( 1, alert4 );
  608.    form_alert( 1, alert5 );
  609.    form_alert( 1, alert6 );
  610.    form_alert( 1, alert7 );
  611.    form_alert( 1, alert10 );
  612.    form_alert( 1, alert12 );
  613.    form_alert( 1, alert50 );
  614.    form_alert( 1, alert51 );
  615.    form_alert( 1, alert52 );
  616.    form_alert( 1, alert53 );
  617.    form_alert( 1, alert54 );
  618.    form_alert( 1, wider );
  619.    form_alert( 1, alert55 );
  620.    form_alert( 1, alert57 );
  621. }
  622. #endif